package top.tenebrous.termbor.rpc.reflect;

import top.tenebrous.termbor.rpc.spi.SPI;

/**
 * @program: termbor-rpc
 * @description:
 * @author: yazhang6
 * @create: 2024-05-24 11:08
 **/
@SPI
public interface ReflectInvoker {

    /**
     * 调用真实方法的SPI通用接口
     * @param serviceBean       方法所在的对象实例
     * @param serviceClass      方法所在对象实例的class对象
     * @param methodName        方法的名称
     * @param parameterTypes    方法的参数类型数组
     * @param parameters        方法的参数数组
     * @return                  方法调用的结果信息
     * @throws Exception        抛出的异常
     */
    Object invokeMethod(Object serviceBean, Class<?> serviceClass, String methodName,
        Class<?>[] parameterTypes, Object[] parameters) throws Throwable;

}
